package com.xbongbong.saas.model;

import com.xbongbong.paas.toolbox.exception.XbbException;
import com.xbongbong.paas.toolbox.wrap.IModel;
import com.xbongbong.pro.dictionary.pojo.dto.DictionaryListDTO;
import com.xbongbong.pro.dictionary.pojo.vo.DictionaryVO;
import com.xbongbong.saas.domain.entity.FormDataDictionaryEntity;
import com.xbongbong.saas.enums.dictionary.DictionaryEnum;

import java.util.List;
import java.util.Map;

/**
 * @author haibin.zhang
 * @version v1.0
 * @date 2019/1/31 9:04
 * @since v1.0
 */
public interface FormDataDictionaryModel extends IModel<FormDataDictionaryEntity> {
    /**
     * 根据type获取数据字典
     * @param type 字典类型
     * @param corpid 公司id
     * @param formId 表单id
     * @return 数据字典
     */
    FormDataDictionaryEntity getByType(Integer type, String corpid, Long formId);

    /**
     * 更新数据字典
     * @param id 主键id
     * @param corpid 公司id
     * @param data 数据字典
     * @param formId 表单id
     * @return 成功
     */
    Integer update(Long id, String corpid, String data, Long formId);

    /**
     * 获取默认数据字典
     * @param type 类型
     * @return 默认数据字典
     */
    FormDataDictionaryEntity getDefaultByType(Integer type);

    /**
     * 数据字典获取
     * @param id id
     * @param corpid 公司id
     * @return
     */
    FormDataDictionaryEntity getByKey(Long id, String corpid);

    //------------以下方法从FormDataDictionaryService内移入，其他项目要用到的底层数据字典方法降到model层
    /**
     * 获取数据字典列表
     * @param dictionaryListDTO 参数
     * @return 数据字典列表
     * @throws XbbException XbbException
     */
    DictionaryVO list(DictionaryListDTO dictionaryListDTO) throws XbbException;

    /**
     * 刷数据
     * @param corpid
     * @param updateMap
     */
    void updateBatch(String corpid, Map<Long,String> updateMap);

    void removeRedis(String corpid, Long formId, DictionaryEnum dictionaryEnum);

    void insertBatch(List<FormDataDictionaryEntity> list);

    @Override
    List<FormDataDictionaryEntity> findEntitys(Map<String, Object> param);

    void updateBatchText(List<FormDataDictionaryEntity> formDataDictionaryEntityList, String corpid);
}
